package ast.statement.update

import ast.expr.SqlBinaryExpr
import ast.expr.SqlBinaryOperator
import ast.expr.SqlExpr
import ast.statement.SqlStatement

/**
 * sql语法树：更新语句
 * @property table SqlExpr? 操作的表
 * @property setList MutableList<Pair<SqlExpr, SqlExpr>> 更新字段与值的二元组列表
 * @property where SqlExpr? 更新条件
 */
data class SqlUpdate(
    var table: SqlExpr? = null,
    val setList: MutableList<Pair<SqlExpr, SqlExpr>> = mutableListOf(),
    var where: SqlExpr? = null
) : SqlStatement {
    /**
     * 添加合取条件
     * @param condition SqlExpr 条件表达式
     */
    fun addCondition(condition: SqlExpr) {
        where = if (where != null) {
            SqlBinaryExpr(where!!, SqlBinaryOperator.AND, condition)
        } else {
            condition
        }
    }
}